package top.ochiamalu.aioj.oauth.platform;

import top.ochiamalu.aioj.domain.dto.oauth.OAuthUserDTO;
import top.ochiamalu.aioj.domain.vo.user.UserLoginVO;

import java.io.IOException;

/**
 * oauth平台
 *
 * @author ochiamalu
 * @date 2025/03/12
 */
public interface OAuthPlatform {
    /**
     * 获取用户信息
     */
    OAuthUserDTO getUser(String code) throws IOException;

    /**
     * 授权登录
     */
    UserLoginVO auth(String code) throws IOException;

    /**
     * 绑定账号
     */
    UserLoginVO bind(Long userId, OAuthUserDTO userInfo);

    /**
     * 检查是否已绑定
     */
    boolean isBound(Long userId);

    /**
     * 解绑账号
     */
    boolean unbind(Long userId);
} 